home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-08-10 | 14.4 KB | 528 lines | [TEXT/MPS ] |
- (*
- File: OSUtils.mod
-
- Contains: OS Utilities Interfaces.
-
- Version: Technology: System 7.5
- Package: Universal Interfaces 2.0 in “MPW Latest” on ETO #17
-
- Copyright: © 1984-1995 by Apple Computer, Inc.
- All rights reserved.
-
- Bugs?: If you find a problem with this file, use the Apple Bug Reporter
- stack. Include the file and version information (from above)
- in the problem description and send to:
- Internet: apple.bugs.applelink.apple.com
- AppleLink: APPLE.BUGS
-
- *)
-
- (*$IF UNDEFINED OLDROUTINENAMES*)
- (*$SET OLDROUTINENAMES FALSE*)
- (*$END*)
- (*$IF UNDEFINED SystemSevenFiveOrLater *)
- (*$SET SystemSevenFiveOrLater FALSE*)
- (*$END*)
- (*$IF UNDEFINED SystemSevenOrLater *)
- (*$IF GENERATINGCFM *)
- (*$SET SystemSevenOrLater TRUE*)
- (*$ELSE*)
- (*$SET SystemSevenOrLater SystemSevenFiveOrLater*)
- (*$END*)
- (*$END*)
- (*$IF UNDEFINED SystemSixOrLater *)
- (*$SET SystemSixOrLater SystemSevenOrLater*)
- (*$END*)
- (*$TAGS-*)
- (*$CALLING PASCAL*)
- MODULE OSUtils;
-
- IMPORT SYSTEM, Types;
-
- (* $PUSH*)
- (* $ALIGN MAC68K*)
- (* $LibExport+*)
-
- CONST
- useFree* = 0;
- useATalk* = 1;
- useAsync* = 2;
- useExtClk* = 3; (*Externally clocked*)
- useMIDI* = 4;
- (* Environs Equates *)
- curSysEnvVers* = 2; (*Updated to equal latest SysEnvirons version*)
- (* Machine Types *)
- envMac* = -1;
- envXL* = -2;
- envMachUnknown* = 0;
- env512KE* = 1;
- envMacPlus* = 2;
- envSE* = 3;
- envMacII* = 4;
- envMacIIx* = 5;
- envMacIIcx* = 6;
- envSE30* = 7;
- envPortable* = 8;
- envMacIIci* = 9;
- envMacIIfx* = 11;
- (* CPU types *)
- envCPUUnknown* = 0;
-
- env68000* = 1;
- env68010* = 2;
- env68020* = 3;
- env68030* = 4;
- env68040* = 5;
- (* Keyboard types *)
- envUnknownKbd* = 0;
- envMacKbd* = 1;
- envMacAndPad* = 2;
- envMacPlusKbd* = 3;
- envAExtendKbd* = 4;
- envStandADBKbd* = 5;
- envPrtblADBKbd* = 6;
- envPrtblISOKbd* = 7;
- envStdISOADBKbd* = 8;
- envExtISOADBKbd* = 9;
- false32b* = 0; (*24 bit addressing error*)
- true32b* = 1; (*32 bit addressing error*)
- (* result types for RelString Call *)
- sortsBefore* = -1; (*first string < second string*)
- sortsEqual* = 0; (*first string* = second string*)
- sortsAfter* = 1; (*first string > second string*)
-
- (* Toggle results *)
- toggleUndefined* = 0;
- toggleOK* = 1;
- toggleBadField* = 2;
- toggleBadDelta* = 3;
- toggleBadChar* = 4;
- toggleUnknown* = 5;
- toggleBadNum* = 6;
- toggleOutOfRange* = 7; (*synonym for toggleErr3*)
- toggleErr3* = 7;
- toggleErr4* = 8;
- toggleErr5* = 9;
- (* Date equates *)
- smallDateBit* = 31; (*Restrict valid date/time to range of Sound.Time global*)
- togChar12HourBit* = 30; (*If toggling hour by char, accept hours 1..12 only*)
- togCharZCycleBit* = 29; (*Modifier for togChar12HourBit*: accept hours 0..11 only*)
- togDelta12HourBit* = 28; (*If toggling hour up/down, restrict to 12-hour range (am/pm)*)
- genCdevRangeBit* = 27; (*Restrict date/time to range used by genl CDEV*)
- validDateFields* = -1;
- maxDateField* = 10;
- eraMask* = $0001;
- yearMask* = $0002;
- monthMask* = $0004;
- dayMask* = $0008;
- hourMask* = $0010;
- minuteMask* = $0020;
- secondMask* = $0040;
- dayOfWeekMask* = $0080;
- dayOfYearMask* = $0100;
- weekOfYearMask* = $0200;
- pmMask* = $0400;
- dateStdMask* = $007F; (*default for ValidDate flags and ToggleDate TogglePB.togFlags*)
-
- eraField* = 0;
- yearField* = 1;
- monthField* = 2;
- dayField* = 3;
- hourField* = 4;
- minuteField* = 5;
- secondField* = 6;
- dayOfWeekField* = 7;
- dayOfYearField* = 8;
- weekOfYearField* = 9;
- pmField* = 10;
- res1Field* = 11;
- res2Field* = 12;
- res3Field* = 13;
-
-
- TYPE
- LongDateField* = Types.SignedByte;
-
-
- CONST
- dummyType* = 0;
- vType* = 1;
- ioQType* = 2;
- drvQType* = 3;
- evType* = 4;
- fsQType* = 5;
- sIQType* = 6;
- dtQType* = 7;
- nmType* = 8;
-
-
- TYPE
- QTypes* = Types.SignedByte;
-
-
- CONST
- OSTrap* = 0;
- ToolTrap* = 1;
-
-
- TYPE
- TrapType* = Types.SignedByte;
-
- SysParmType* = (*ΔΔPACKEDΔΔ*) RECORD
- valid*: Types.UInt8;
- aTalkA*: Types.UInt8;
- aTalkB*: Types.UInt8;
- config*: Types.UInt8;
- portA*: INTEGER;
- portB*: INTEGER;
- alarm*: LONGINT;
- font*: INTEGER;
- kbdPrint*: INTEGER;
- volClik*: INTEGER;
- misc*: INTEGER;
- END;
-
- SysPPtr* = POINTER TO SysParmType;
-
- QElemPtr* = POINTER TO QElem;
-
- QElem* = RECORD
- qLink*: QElemPtr;
- qType*: INTEGER;
- (*ΔΔ qData*: ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF INTEGER;*)
- END;
-
- QHdrPtr* = POINTER TO QHdr;
-
- QHdr* = RECORD
- qFlags*: INTEGER;
- qHead*: QElemPtr;
- qTail*: QElemPtr;
- END;
-
- (*
- DeferredTaskProcPtr uses register based parameters on the 68k and cannot
- be written in or called from a high-level language without the help of
- mixed mode or assembly glue.
-
- In*:
- => dtParam A1.L
- *)
- DeferredTaskProcPtr* = Types.Register68kProcPtr; (* register PROCEDURE OSUtils*.DeferredTask(dtParam: LONGINT); *)
- DeferredTaskUPP* = Types.UniversalProcPtr;
-
- DeferredTask* = RECORD
- qLink*: QElemPtr;
- qType*: INTEGER;
- dtFlags*: INTEGER;
- dtAddr*: DeferredTaskUPP;
- dtParam*: LONGINT;
- dtReserved*: LONGINT;
- END;
-
- DeferredTaskPtr* = POINTER TO DeferredTask;
-
- SysEnvRec* = RECORD
- environsVersion*: INTEGER;
- machineType*: INTEGER;
- systemVersion*: INTEGER;
- processor*: INTEGER;
- hasFPU*: BOOLEAN;
- hasColorQD*: BOOLEAN;
- keyBoardType*: INTEGER;
- atDrvrVersNum*: INTEGER;
- sysVRefNum*: INTEGER;
- END;
-
- MachineLocation* = RECORD
- latitude*: Types.Fract;
- longitude*: Types.Fract;
- (*ΔΔ CASE INTEGER OF
- 0: ( *)
- dlsDelta*: Types.SInt8; (*signed byte; daylight savings delta*)
- (*ΔΔ );
- 1: (
- gmtDelta*: LONGINT; (*must mask - see documentation*)
- );*)
- END;
-
- DateTimeRec* = RECORD
- year*: INTEGER;
- month*: INTEGER;
- day*: INTEGER;
- hour*: INTEGER;
- minute*: INTEGER;
- second*: INTEGER;
- dayOfWeek*: INTEGER;
- END;
-
- LongDateTime* = Types.wide;
-
- LongDateCvt* = RECORD
- (*ΔΔ CASE INTEGER OF
- 0: (
- c*: wide;
- );
- 1: ( *)
- lHigh*: Types.UInt32;
- lLow*: Types.UInt32;
- (*ΔΔ );*)
- END;
-
- LongDateRec* = RECORD
- (*ΔΔ CASE INTEGER OF
- 0: ( *)
- era*: INTEGER;
- year*: INTEGER;
- month*: INTEGER;
- day*: INTEGER;
- hour*: INTEGER;
- minute*: INTEGER;
- second*: INTEGER;
- dayOfWeek*: INTEGER;
- dayOfYear*: INTEGER;
- weekOfYear*: INTEGER;
- pm*: INTEGER;
- res1*: INTEGER;
- res2*: INTEGER;
- res3*: INTEGER;
- (*ΔΔ );
- 1: (
- list*: ARRAY 14 (*ΔΔ[0..13]ΔΔ*) OF INTEGER; (*Index by LongDateField!*)
- );
- 2: (
- eraAlt*: INTEGER;
- oldDate*: DateTimeRec;
- );*)
- END;
-
- DateDelta* = Types.SInt8;
-
- TogglePB* = RECORD
- togFlags*: LONGINT; (*caller normally sets low word to dateStdMask=$7F*)
- amChars*: Types.ResType; (*from LONG("itl0"), but uppercased*)
- pmChars*: Types.ResType; (*from LONG("itl0"), but uppercased*)
- reserved*: ARRAY 4 (*ΔΔ[0..3]ΔΔ*) OF LONGINT;
- END;
-
- ToggleResults* = INTEGER;
-
- CONST
- uppDeferredTaskProcInfo* = $0000B802; (* Register PROCEDURE (4 bytes in A1); *)
-
- PROCEDURE NewDeferredTaskProc*(userRoutine: DeferredTaskProcPtr): DeferredTaskUPP;
- (*$IF NOT GENERATINGCFM *)
- INLINE PASCAL $2E9F;
- (*$END*)
-
- PROCEDURE CallDeferredTaskProc*(dtParam: LONGINT; userRoutine: DeferredTaskUPP);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL ; (*••*)
- (*To be implemented*: Glue to move parameters into registers.*)
- (*$END*)
-
- PROCEDURE LongDateToSeconds*((*CONST*)VAR lDate: LongDateRec; VAR lSecs: LongDateTime);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $2F3C, $8008, $FFF2, $A8B5;
- (*$END*)
- PROCEDURE LongSecondsToDate*(VAR lSecs: LongDateTime; VAR lDate: LongDateRec);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $2F3C, $8008, $FFF0, $A8B5;
- (*$END*)
- PROCEDURE ToggleDate*(VAR lSecs: LongDateTime; field: Types.ByteParameter; delta: Types.ByteParameter; ch: INTEGER; (*CONST*)VAR params: TogglePB): ToggleResults;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $2F3C, $820E, $FFEE, $A8B5;
- (*$END*)
- PROCEDURE ValidDate*((*CONST*)VAR vDate: LongDateRec; flags: LONGINT; VAR newSecs: LongDateTime): INTEGER;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $2F3C, $820C, $FFE4, $A8B5;
- (*$END*)
- PROCEDURE IsMetric*(): BOOLEAN;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $3F3C, $0004, $A9ED;
- (*$END*)
- PROCEDURE GetSysPPtr*(): SysPPtr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $2EBC, $0000, $01F8;
- (*$END*)
- PROCEDURE ReadDateTime*(VAR time: LONGINT): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $A039, $3E80;
- (*$END*)
- PROCEDURE GetDateTime*(VAR secs: LONGINT);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $20B8, $020C;
- (*$END*)
- PROCEDURE SetDateTime*(time: LONGINT): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $201F, $A03A, $3E80;
- (*$END*)
- PROCEDURE SetTime*((*CONST*)VAR d: DateTimeRec);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $A9C7, $A03A;
- (*$END*)
- PROCEDURE GetTime*(VAR d: DateTimeRec);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $2038, $020C, $A9C6;
- (*$END*)
- PROCEDURE DateToSeconds*((*CONST*)VAR d: DateTimeRec; VAR secs: LONGINT);
- EXTERNAL PASCAL;
- PROCEDURE SecondsToDate*(secs: LONGINT; VAR d: DateTimeRec);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $201F, $A9C6;
- (*$END*)
- PROCEDURE SysBeep*(duration: INTEGER);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $A9C8;
- (*$END*)
- PROCEDURE DTInstall*(dtTaskPtr: DeferredTaskPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $A082, $3E80;
- (*$END*)
- PROCEDURE GetMMUMode*(): Types.ByteParameter;
- (*$IF NOT CFMSYSTEMCALLS*)
- INLINE PASCAL $1EB8, $0CB2; (* MOVE.b $0CB2,(SP) *)
- (*$END*)
-
- PROCEDURE SwapMMUMode*(VAR mode: Types.SInt8);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $1010, $A05D, $1080;
- (*$END*)
- (*$IF SystemSixOrLater *)
- PROCEDURE SysEnvirons*(versionRequested: INTEGER; VAR theWorld: SysEnvRec): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $301F, $A090, $3E80;
- (*$END*)
- (*$ELSE*)
- PROCEDURE SysEnvirons*(versionRequested: INTEGER; VAR theWorld: SysEnvRec): Types.OSErr;
- EXTERNAL PASCAL;
- (*$END*)
- PROCEDURE Delay*(numTicks: LONGINT; VAR finalTicks: LONGINT);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $225F, $205F, $A03B, $2280;
- (*$END*)
- (*
- GetTrapAddress and SetTrapAddress are obsolete and should not
- be used. Always use NGetTrapAddress and NSetTrapAddress instead.
- The old routines will not be supported for PowerPC apps.
- *)
- (*$IF OLDROUTINENAMES AND NOT GENERATINGCFM *)
- PROCEDURE GetTrapAddress*(trapNum: INTEGER): Types.UniversalProcPtr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $301F, $A146, $2E88;
- (*$END*)
- PROCEDURE SetTrapAddress*(trapAddr: Types.UniversalProcPtr; trapNum: INTEGER);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $301F, $205F, $A047;
- (*$END*)
- (*$END*)
- PROCEDURE NGetTrapAddress*(trapNum: INTEGER; tTyp: Types.ByteParameter): Types.UniversalProcPtr;
- EXTERNAL PASCAL;
- PROCEDURE NSetTrapAddress*(trapAddr: Types.UniversalProcPtr; trapNum: INTEGER; tTyp: Types.ByteParameter);
- EXTERNAL PASCAL;
- PROCEDURE GetOSTrapAddress*(trapNum: INTEGER): Types.UniversalProcPtr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $301F, $A346, $2E88;
- (*$END*)
- PROCEDURE SetOSTrapAddress*(trapAddr: Types.UniversalProcPtr; trapNum: INTEGER);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $301F, $205F, $A247;
- (*$END*)
- PROCEDURE GetToolTrapAddress*(trapNum: INTEGER): Types.UniversalProcPtr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $301F, $A746, $2E88;
- (*$END*)
- PROCEDURE SetToolTrapAddress*(trapAddr: Types.UniversalProcPtr; trapNum: INTEGER);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $301F, $205F, $A647;
- (*$END*)
- PROCEDURE GetToolboxTrapAddress*(trapNum: INTEGER): Types.UniversalProcPtr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $301F, $A746, $2E88;
- (*$END*)
- PROCEDURE SetToolboxTrapAddress*(trapAddr: Types.UniversalProcPtr; trapNum: INTEGER);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $301F, $205F, $A647;
- (*$END*)
- PROCEDURE WriteParam*(): Types.OSErr;
- EXTERNAL PASCAL;
- PROCEDURE Enqueue*(qElement: QElemPtr; qHeader: QHdrPtr);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $225F, $205F, $A96F;
- (*$END*)
- PROCEDURE Dequeue*(qElement: QElemPtr; qHeader: QHdrPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $225F, $205F, $A96E, $3E80;
- (*$END*)
- PROCEDURE SetCurrentA5*(): LONGINT;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $2E8D, $2A78, $0904;
- (*$END*)
- PROCEDURE SetA5*(newA5: LONGINT): LONGINT;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $2F4D, $0004, $2A5F;
- (*$END*)
- (*$IF NOT SystemSevenOrLater *)
- PROCEDURE Environs*(VAR rom: INTEGER; VAR machine: INTEGER);
- EXTERNAL PASCAL;
- (*$END*)
- PROCEDURE InitUtil*(): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $A03F, $3E80;
- (*$END*)
- (*$IF GENERATING68K *)
- PROCEDURE SwapInstructionCache*(cacheEnable: BOOLEAN): BOOLEAN;
- EXTERNAL PASCAL;
- PROCEDURE FlushInstructionCache*;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7001, $A098;
- (*$END*)
- PROCEDURE SwapDataCache*(cacheEnable: BOOLEAN): BOOLEAN;
- EXTERNAL PASCAL;
- PROCEDURE FlushDataCache*;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $7003, $A098;
- (*$END*)
- PROCEDURE FlushCodeCache*;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $A0BD;
- (*$END*)
- PROCEDURE FlushCodeCacheRange*(address: (*ΔΔUNIVΔΔ*) Types.Ptr; count: LONGINT);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $225F, $205F, $7009, $A098;
- (*$END*)
- (*$END*)
- PROCEDURE ReadLocation*(VAR loc: MachineLocation);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $203C, $000C, $00E4, $A051;
- (*$END*)
- PROCEDURE WriteLocation*((*CONST*)VAR loc: MachineLocation);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $203C, $000C, $00E4, $A052;
- (*$END*)
- (*$IF OLDROUTINENAMES *)
- PROCEDURE LongDate2Secs*((*CONST*)VAR lDate: LongDateRec; VAR lSecs: LongDateTime);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $2F3C, $8008, $FFF2, $A8B5;
- (*$END*)
- PROCEDURE LongSecs2Date*(VAR lSecs: LongDateTime; VAR lDate: LongDateRec);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $2F3C, $8008, $FFF0, $A8B5;
- (*$END*)
- PROCEDURE IUMetric*(): BOOLEAN;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $3F3C, $0004, $A9ED;
- (*$END*)
- PROCEDURE Date2Secs*((*CONST*)VAR d: DateTimeRec; VAR secs: LONGINT);
- EXTERNAL PASCAL;
- PROCEDURE Secs2Date*(secs: LONGINT; VAR d: DateTimeRec);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $201F, $A9C6;
- (*$END*)
- (*$END*)
-
- (* $ALIGN RESET*)
- (* $POP*)
-
- END OSUtils.
-